Číst v angličtině

Sdílet prostřednictvím


Zásadní změny v Razoru po .NET 8.0.100 až .NET 9.0.100

Tento dokument uvádí známé zásadní změny v Razoru po obecné verzi .NET 8 (.NET SDK verze 8.0.100) až po obecnou verzi .NET 9 (.NET SDK verze 9.0.100).

@ Analýza identifikátorů byla sjednocená.

Zavedeno ve VS 17.10 a .NET 8.0.300

V https://github.com/dotnet/razor/pull/10232tomto případě jsme upravili chování způsobu analýzy identifikátoru, @ aby byl v rámci Razoru konzistentnější. Výsledkem je několik scénářů, které mají jiné chování, které jsou uvedené níže.

Doslovné interpolované řetězce

Řetězce formuláře @$"ticket-{i}.png" se už nerozpoznají. To bude opraveno v pozdější verzi změnou na nový lexer; až do té doby použijte $@ alternativní řešení problému.

Direktivy preprocesoru jazyka C# následované kódem HTML nejsou správně analyzovány.

  1. Direktiva preprocesoru je přímo před kódem HTML. Tato příchuť vypadá nějak takto:
razor
@{
    #region R
    <h3>@ViewData["Title"]</h3>
    #endregion
}
  1. Mezi direktivou preprocesoru a html je platný jazyk C#, ale neobsahuje znak, který analyzátoru říká, aby před kódem HTML ukončil analýzu. Jedná se o variaci 1 a může nastat například switch s příkazy:
razor
@{
    switch (true)
    {
        #region R
        case true:
            <div>@(1 + 1)</div>
            break;
    }
}

Dříve se direktivy preprocesoru jazyka C# následované kódem HTML někdy správně parsovaly, pokud by v něm kód HTML měl @ přechod. Nyní se konzistentně parsuje nesprávně. To bude vyřešeno v pozdější verzi změnou na nový lexer. Do té doby jsou k dispozici alternativní řešení pro kompilaci.

Obklopit kód HTML v bloku

KÓD HTML může být obklopen složenými závorkami.

razor
@{
    #if  DEBUG
    {
        <h3>@ViewData["Title"]</h3>
    }
    #endif
}

Přidání středníku do direktivy

Direktivy, jako #region jsou a #endregion umožňují umístit středník za direktivu. Tento problém se bude efektivně řešit.

razor
@{
    #region R ;
    <h3>@ViewData["Title"]</h3>
    #endregion
}

Přidání středníku za direktivu

Direktivy, jako #if jsou a #endif neumožňují středníky za podmínkou direktivy, ale jeden lze umístit na další řádek, aby byl prázdný příkaz.

razor
@{
    #if  DEBUG
    ;
    <h3>@ViewData["Title"]</h3>
    #endif
}